@Autowired
是Spring框架中的一個註解,用於實現依賴注入 (DI,Dependency Injection),它允許將一個物件的依賴關係交給容器來管理,用於告訴Spring容器自動注入標記的屬性、函數或方法參數。
讓我們回到昨天的例子,廚房這個類別是服務層:
import org.springframework.stereotype.Service;
@Service
public class Kitchen {
// 服務層業務邏輯程式碼
public String cook(Restaurant restaurant){
String dish = restaurant.getChef + "cooks" + restaurant.getFood;
return dish;
}
}
Controller 使用@Autowired
註解來自動綁定Kitchen
物件。
package com.example.spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
// 依賴注入 Kitchen 服務層
@Autowire
private Kitchen kitchen;
@RequestMapping("/hello")
public ModelAndView helloWorld() {
ModelAndView modelAndView = new ModelAndView("helloView");
// 建立一個 Restaurant 物件
Restaurant restaurant = new Restaurant("John", "Fish");
// 將 Restaurant 物件讓廚房的方法處理
String dish = kitchen.cook(restaurant);
// 將回傳 dish 加到模型中
modelAndView.addAttribute("dish", dish);
// 回傳 ModelAndView 物件
return modelAndView;
}
}
在上面的示例中,@Autowired
註解來自動裝配Kitchen
對象。這意味著Spring容器會自動查找Kitchen
Bean 並將其傳遞給構造函數。
總之,@Autowired
註解使依賴注入變得更加簡單和方便,避免了手動建立物件和管理依賴關係的麻煩,Spring容器會自動處理依賴的解析和注入。
https://docs.spring.io/spring-framework/reference/core/beans/annotation-config/autowired.html
https://www.baeldung.com/spring-autowire